// 子弹构造函数
(function (window, undefined) {
  //变量控制子弹定位方式
  var ps = 'absolute';
  //子弹构造函数
  function Bullet(obj) {
    //判断用户输入参数
    obj = obj instanceof Object ? obj : {};
    //子弹宽高、背景色、移动速度
    this.width = obj.width || 1;
    this.height = obj.height || 10;
    this.backgroundColor = obj.backgroundColor || "#fff";
    this.speed = obj.speed || 10;
    //子弹元素数组
    this.eles = [];
    // 子弹参数数组（每一颗子弹的定位数据都在这）
    this.item = [{
      x: 100,
      y: 300
    }];
  }
  //子弹原型
  Bullet.prototype = {
    //指向构造函数
    constructor: Bullet,
    //子弹渲染方法
    render: function (map) {
      //遍历子弹参数，有多少个参数就有多少颗子弹
      for (let i = 0, l = this.item.length; i < l; i++) {
        //创建元素
        var me = document.createElement('span');
        //子弹css样式
        me.style.position = ps;
        me.style.width = this.width + 'px';
        me.style.height = this.height + 'px';
        me.style.left = this.item[i].x + 'px';
        me.style.top = this.item[i].y + 'px';
        me.style.backgroundColor = this.backgroundColor;
        //将子弹添加到舞台上
        map.appendChild(me);
        //把生成的子弹添加到数组中以便后期调用
        this.eles.push(me);
      }
    },
    //子弹位置更新方法
    upDate: function () {
      //循环遍历所有子弹参数
      for (let i = this.item.length - 1; i >= 0; i--) {
        //判断子弹是否已经超出舞台，如果超出舞台，删除子弹
        if (this.item[i].y <= 0) {
          this.item.splice(i, 1);
        } else {
          //没超出舞台，子弹向上移动
          this.item[i].y -= this.speed;
        }
      }
    },
    //子弹删除方法
    remove: function (map) {
      //遍历所有子弹节点，从舞台删除
      for (let i = 0, l = this.eles.length; i < l; i++) {
        map.removeChild(this.eles[i]);
      }
      //清空子弹
      this.eles = [];
    },
    //子弹死亡方法
    die: function (i) {
      this.item.splice(i, 1);
    }
  }
  //把子弹添加到window上
  window.Bullet = Bullet;
})(window, undefined)